package code11_util;

import java.util.Arrays;
import java.util.Random;

import org.junit.Test;

public class TestMath {
	@Test
	public void f1() {
		// Math 用于数学的相关运算, 所有方法都是静态的
		// 常量
		System.out.println("圆周率:"+Math.PI);
		System.out.println("自然对数:"+Math.E);
		
		double a = 3.758;
		// round() 四舍五入保留整数位
		System.out.println("n1:"+Math.round(a));// 4
		System.out.println((int)a);// 容易丢失精度, 3
		
		// floor() 返回小于或等于参数的 最大的整数 (向下取整)
		double floor = Math.floor(a);
		System.out.println("floor:"+floor);// 3
		
		// ceil() 返回大于或等于 参数的 最小的整数 (向上取整)
		double ceil = Math.ceil(a);
		System.out.println("ceil:"+ceil);// 4
		
		// abs() 绝对值
		System.out.println("abs:"+Math.abs(-4.56));
		
		// pow(x,y) 幂, x的y次方
		System.out.println(Math.pow(2, 10));// 1024
		
		// random() 返回一个 [0,1) 的随机小数
		System.out.println("random1:"+Math.random());
		System.out.println("random2:"+Math.random());
	}
	@Test
	public void f2() {
		int[] arr = random3();
		System.out.println(Arrays.toString(arr));
	}
	public static int random1() {
		// 随机一个 0~10 的整数
		int m = (int)(Math.random()*11);// [0,11)
		int m2 = (int) Math.round(Math.random()*10);// [0,10)
		return m;
	}
	public static int random2() {
		// 随机一个 2~8 的整数
		// 0~6 + 2
		int m = (int)(Math.random()*7);// [0,6]
		return m + 2;
	}
	public static int[] random3() {
		int[] arr = new int[5];
		// 随机 5个 11 ~ 20 的整数
		// 0~9 + 11
		for (int i = 0; i < arr.length; i++) {
			int m = (int)(Math.random()*10);// [0,9]
			int num = m + 11;// 11 ~ 20
			arr[i] = num;
		}
		return arr;
	}
	public static double area(double r) {
		// 计算圆的面积, r 是圆的半径, π*r*r
		return Math.PI * r * r;
	}
	
}
